MySQL 中如果字段类型是 char 或 varchar 类型,在字符串比较时 MySQL 使用 PADSPACE 校对规则,会忽略字段末尾的空格字符
比如有这样一个 SQL 语句 :
1 | select * from table where user = 'wxp '; |
但是可以查询到数据库中 user 为 wxp 的那一行
那么若想做到精确匹配,可以有如下解决方法:
第一种方法:使用 like
1 | select * from table where user like 'wxp '; |
第二种方法:使用 BINARY
1 | select * from table where user = BINARY'wxp '; |
第三种方法:添加 len 函数
1 | slect * form table where user = 'wxp ' and LENGTH(user) = LENGTH('wxp ') |
官方手册说明(5.0版本):
http://dev.mysql.com/doc/refman/5.0/en/char.html
1 | 11.1.6.1. The CHAR and VARCHAR Types |